Como leer y escribir en archivos y usar streams para manejar los datos de distintas maneras.
Para leer y escribir caracteres en un archivo usamos las clases StreamWriter y StreamReader, y los métodos WriteLine() y ReadToEnd().
Código de ejemplo:
using static System.IO.Directory;
using static System.IO.Path;
using static System.Environment;
string dir = Combine(GetFolderPath(SpecialFolder.UserProfile), "PruebaArchivo");
CreateDirectory(dir);
string archivo = Combine(dir, "Caracteres.txt");
/***** ESCRITURA DE ARCHIVO *****/
StreamWriter escritor = File.CreateText(archivo);
escritor.WriteLine("Texto de ejemplo");
escritor.Close();
/***** LECTURA DE ARCHIVO *****/
StreamReader lector = File.OpenText(archivo);
String texto = lector.ReadToEnd();
Console.WriteLine(texto);
lector.Close();
Para escribir datos binarios en un fichero primero creamos un objeto FileStream y a continuación lo encapsulamos con un stream BinaryWriter, despues solo tenemos que usar el método Write para escribir los datos al archivo
El método Write se encarga de escribir los datos según el tipo de dato que le pasemos, si por ejemplo le pasamos un int escribirá 4 bytes, si le pasamos un long 8 bytes...etc
Código de ejemplo:
using static System.IO.Directory;
using static System.IO.Path;
using static System.Environment;
string dir = Combine(GetFolderPath(SpecialFolder.UserProfile), "PruebaArchivo");
CreateDirectory(dir);
string archivo = Combine(dir, "Binario.dat");
/***** ESCRITURA DE ARCHIVO *****/
FileStream escritor = File.Create(archivo);
BinaryWriter writer= new BinaryWriter(escritor);
writer.Write(5);
writer.Close();
escritor.Close();
/***** LECTURA DE ARCHIVO *****/
FileStream lector = new FileStream(archivo, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[4];
lector.Read(buffer, 0, 4);
int numero = (int)buffer[0];
Console.WriteLine(numero);
lector.Close();
En vez de cerrar los recursos de manera manual usando close podemos utilizar la sentencia using para que el propio lenguaje lo haga de manera automática.
Este código:
StreamWriter escritor = File.CreateText(archivo);
escritor.WriteLine("Texto de ejemplo");
escritor.Close();
Pasaría a quedar así:
using (StreamWriter escritor = File.CreateText(archivo))
{
escritor.WriteLine("Texto de ejemplo");
}
C# | Archivos | Streams